class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        result=[[0]*n for _ in range(n)]
        borders=[1,n-1,0,n-1]#上下左右
        direction=3#0123上下左右
        x=y=0
        val=1
        while val<=n*n:
            if direction==0:
                while x>=borders[0]:
                    result[x][y]=val
                    x-=1
                    val+=1
                x+=1
                direction=3
                y+=1
                borders[0]+=1
            elif direction==1:
                while x<=borders[1]:
                    result[x][y]=val
                    x+=1
                    val+=1
                x-=1
                direction=2
                y-=1
                borders[1]-=1
            elif direction==2:
                while y>=borders[2]:
                    result[x][y]=val
                    y-=1
                    val+=1
                y+=1
                direction=0
                x-=1
                borders[2]+=1
            else:
                while y<=borders[3]:
                    result[x][y]=val
                    y+=1
                    val+=1
                y-=1
                direction=1
                x+=1
                borders[3]-=1
        return result


'''
执行用时：
36 ms
, 在所有 Python3 提交中击败了
81.94%
的用户
内存消耗：
15 MB
, 在所有 Python3 提交中击败了
18.26%
的用户
'''